<?php
/**
 * 评论评论
 * @author jepin
 * @version 1.0
 * @createdate 20140714
 */
class CommentsModel extends Model {
    var $tableName = 'cms_comments';
    var $pageCount = 10;  //页面一次加载评论回复的数量
    protected $mid;
    function _initialize() {
    	$this->mid = session('mid'); 
    } 
     
    /**
     * 发布评论
     * @param array $data
     */
    function addcomment($data){
    	 $id= $this->add( $data );  
         if($id){
         	M()->query('UPDATE  '.$this->tablePrefix.'cms_comments  t set t.parent = '.$id.' where t.id='.$id);	 
         	M()->query('UPDATE  '.$this->tablePrefix.'cms_article   t set t.comment_count = t.comment_count+1 where t.id='.$data['article_id']);
         	return $id;            
         }else{
             return false;
         }
    	 return true;
    }
    
    /**
     * 通过评论ID获取评论信息
     * @param ID 评论Id
     * @return  评论或着回复信息
     */
    public function  getCommentByID($id){
    	return $this->find($id);
    }
    
    /**
     * 点赞 
     * @param  $id 评论ID
     * @param  $type  点赞类型 0 表示-1 ,1表示 +1
     */
    Public function pointPraise($id,$type){
       if($type){
       	M()->query('UPDATE  '.$this->tablePrefix.'cms_comments  t set t.praise_count = t.praise_count+1 where t.id='.$id);
       }else{
       	M()->query('UPDATE  '.$this->tablePrefix.'cms_comments  t set t.praise_count = t.praise_count-1 where t.id='.$id);
       }
       return "true"; 
    }
    
    /**
     * replyComment  新增评论回复内容
     * @param  $data  回复内容
     * @param  $toID  回复的父Id
     */
    public function replyComment($data,$toID){    	 
    	if( $id= $this->data($data)->add() ){         	
    		 return  $id;
    	}else{
    		return false;
    	}
    	return true;
    }
    
    /**
     * 获取评论
     * @param int $id 文章ID
     * @param  $pagenum 开始页码
     * @param string $order 排序
     */
    function getComments( $id, $pagenum = 1 ){
    	// 评论开始位置小于0时  赋值开始位置为0 防止非法输入
    	if($pagenum < 0){
    		$pagenum =0;                                
    	} 
    	$pageStart = $pagenum;
    	$count = $this->where("article_id=".$id.' and type = 0' )->count();  //
    	if($pageStart > $count){
    		return null;
    	}   
    	//查询出 父id分页的数据
        $parent_result= M()->query('select parent from '.$this->tablePrefix.'cms_comments WHERE type = 0 and article_id='.$id.' ORDER BY commenttime desc limit '.$pageStart.','.$this->pageCount);
        $parent_str = null;
    	// 字符串拼接
    	foreach ($parent_result as $v){
    		$parent_str .= $v['parent'].',';
    	}
    	// 去掉最后一个逗号
    	$parent_str = substr($parent_str, 0,strlen($parent_str)-1);
        $result =  $this->where(" parent in(".$parent_str.")")->order( "parent  desc ,commenttime")->select();
        return $result;    	 
    }
    
    /**
     * 加载评论 渲染评论内容
     * @param $id 　评论ID
     * @param $Page 
     */
     function  loadComments($id,$pagenum=1){     	   	
          $comment_list = $this->getComments($id,$pagenum);      
          return  $comment_list;  	
     }
    
    /**
     * 删除评论model
     * @param $uid  用户ID 
     * @param $id   评论ID
     */
    public function delComments($uid,$id){   
    	$data = $this->where('id = '.$id.' or parent = '.$id)->find();
    	$res =$this->where('(id = '.$id.' or parent = '.$id.') and user_id =100000000 user_id ='.$uid)->delete();
    	if ($res&&!empty($data)){
    		M()->query('UPDATE  '.$this->tablePrefix.'cms_article   t set t.comment_count = t.comment_count-1 where t.id='.$data['article_id']);
    	    return true;
    	}else{
    		return false;
    	}
    }
    
    /**
     * 获取评论数量
     * @param  $article_id 文章Id  
     */
    public function getCommentCount($article_id){
    	$count = $this->where("type=0 and article_id=".$article_id)->count();//type 0 表示评论 type 1表示回复
    	return $count;
    }
 
}
